import axios from 'axios';

// 创建 Axios 实例
axios.create({
    baseURL: '', // 替换为你的 API 基础 URL
    timeout: 50000 // 请求超时时间
});

const httpUrl = 'http://localhost:6082'

// 请求拦截器
axios.interceptors.request.use(
    config => {
        // 在发送请求之前做些什么，例如添加 token
        const token = window.localStorage.getItem("token");
        console.log("token",token)
        if (token) {
            config.headers['Authorization'] = `Bearer ${token}`;
        }
        return config;
    },
    error => {
        // 处理请求错误
        console.error('请求拦截器出错:', error);
        return Promise.reject(error);
    }
);

// 响应拦截器
axios.interceptors.response.use(
    response => {
        // 对响应数据做点什么
        const { data, status } = response;
        if (status === 200) {
            return data;
        } else {
            console.error('响应状态码非 200:', status);
            return Promise.reject(new Error(`响应状态码非 200: ${status}`));
        }
    },
    error => {
        // 处理响应错误
        if (error.response) {
            const { status } = error.response;
            switch (status) {
                case 401:
                    console.error('未授权，请登录');
                    localStorage.clear();
                    // 可以在这里添加跳转到登录页的逻辑
                    break;
                case 403:
                    console.error('禁止访问');
                    break;
                case 404:
                    console.error('请求资源不存在');
                    break;
                case 500:
                    console.error('服务器内部错误');
                    break;
                default:
                    console.error(`未知错误状态码: ${status}`);
            }
        } else if (error.request) {
            console.error('请求已发送，但没有收到响应');
        } else {
            console.error('请求出错:', error.message);
        }
        return Promise.reject(error);
    }
);

// 封装通用的 API 请求函数
// const request = async (config) => {
//     try {
//         const response = await service(config);
//         return response;
//     } catch (error) {
//         console.error('请求出错:', error);
//         throw error;
//     }
// };

export function post(
    url,
    data = {}
  ) {
    return new Promise((resolve, reject) => {
      axios.post(httpUrl+url, data).then((response) => {
            resolve(response.data);
        }).catch((err) => {
            reject(err);
        });
    })
}


export function fetch(
    url,
    params = {},
  ) {
    return new Promise((resolve, reject) => {
      axios.get(httpUrl+url,{ params }).then((response) => {
          resolve(response.data);
        })
        .catch((err) => {
          reject(err);
        });
    });
}

// export default request;